//
//  ViewController.h
//  wnagyi_news
//
//  Created by Guo Rui on 2017/9/13.
//  Copyright © 2017年 GR Harry. All rights reserved.
//

#import <UIKit/UIKit.h>

extern NSString * const kClassNameKey;
extern NSString * const kTitleKey;


@interface TopTableBarViewController : UIViewController

/**
 *  向此控制器中添加子控制器时，需要提供一个NSDictionary，NSDictionary的kClassNameKey的值是子控制器的类名，kTitleKey的值是控制器的标题。
 *  将需要添加的所有的控制器包装成字典，通过 属性-viewControllerMap 或 方法-vcClass_TitleMaps 来提供.
 *
 *  属性-viewControllerMap 用于该类需要被实例化使用时，赋值。
 *  方法-vcClass_TitleMaps 用于该类被继承使用时，重写。
 *
 *  如果都实现了，以属性的优先级高。
 *  如果都没有实现，采用内部默认方法。
 */
@property (nonatomic, strong) NSArray *viewControllerMap;
- (NSArray <NSDictionary *> *)vcClass_TitleMaps;

/**
 *  @brief 初始化子控制的回调，可以自定义每个子控制器的初始化过程。如果没有定义这个block，就会使用默认的方式进行初始化操作。
 *  属性-initializeViewControllerBlock 用于该类需要被实例化使用时，赋值。
 *  方法-setupViewControllerWithClassName:title: 用于该类被继承使用时，重写。
 *
 *  如果都实现了，以属性的优先级高。
 *  如果都没有实现，采用内部默认方法。
 */
@property (copy, nonatomic) UIViewController * (^initializeViewControllerBlock)(Class viewControllerClass, NSString *title);
- (UIViewController *)setupViewControllerWithClassName:(Class)viewControllerClass title:(NSString *)title;
@end

